#!/bin/bash
function KorostaValittu {
  Xkoordinaatti=$(((ValitunNumero - 1 - $(((ValitunNumero - 1) / 33))) / 33)); Ykoordinaatti=$((ValitunNumero - $((33 * Xkoordinaatti -1))+3));tput cup $((Ykoordinaatti - Xkoordinaatti - 2)) $((Xkoordinaatti * 30));  tput setf 4; echo ${Valittavat[ValitunNumero-1])} 
}

function NormalisoiValittu {
  Xkoordinaatti=$(((ValitunNumero - 1 - $(((ValitunNumero - 1) / 33))) / 33)); Ykoordinaatti=$((ValitunNumero - $((33 * Xkoordinaatti - 1))+3));tput cup $((Ykoordinaatti - Xkoordinaatti - 2)) $((Xkoordinaatti * 30));  tput setf 3; echo ${Valittavat[ValitunNumero-1])} 
}

function TulostaValittavat {
ValittavienLuku=${#Valittavat[@]}
SarakkeidenLuku=$(($ValittavienLuku / 33))
tput setf 3
for (( Sarake=0; Sarake<=SarakkeidenLuku; Sarake++ )) 
do
  for (( Rivi=0; Rivi<=33; Rivi++ ))
  do
    apu=$((Sarake*33))
    test $((apu+Rivi)) -gt $ValittavienLuku && continue
    tput cup $((Rivi+3)) $((Sarake*30)) 
    echo ${Valittavat[((apu+Rivi+Sarake))]} # $apu,$Rivi,$Sarake OK
  done
done
}
 
function MuutaValittuNuolinappaimilla { 
read -sn3 key 
[[ ! ${key#*OF} ]] && Tapahtuma='end' && valintatehty=1 # kun on painettu end   koe
[[ ! $key ]] && Tapahtuma='enter' && valintatehty=1 # kun on painettu enter     koe
[[ ${key#*[B} ]] && NormalisoiValittu && ValitunNumero=$((ValitunNumero-(ValitunNumero>1))) && valintalukko='' # kun on painettu nuoli-ylös
[[ ${key#*[A} ]] && NormalisoiValittu && ValitunNumero=$((ValitunNumero+(ValitunNumero<${#Valittavat[*]}))) && valintalukko='' # nuoli-alas
}
 
function ValitseValittavistaYksi () {
local Otsikko key valintatehty=0 Xkoordinaatti Ykoordinaatti 
ValitunNumero=1  
clear; setterm -cursor off
echo '- valittuna oleva on erivärinen. Valittu muuttuu nuolinäppäimillä.'
echo 'Valitse poistettava näistä suurimmista tiedostoista: jos painat enter niin kohta poistetaan mutta jos painat end lopetetaan ohjelma'
TulostaValittavat
while [ $valintatehty -lt 1 ]; do
  KorostaValittu 
  MuutaValittuNuolinappaimilla
done
clear; tput setf 0; setterm -cursor on 
ValitunTeksti=${Valittavat[ValitunNumero-1]}
[[ ! ${ValittavanArvo[ValitunNumero-1]} ]] && ValitunArvo='ei määritelty' || ValitunArvo=${ValittavanArvo[ValitunNumero-1]}
}
 
# Pääohjelma
ix=0
read -p "mitä merkkiryhmää etsit kansioista: ~/omatskriptit ja ~/omatskriptit/KOE_JA_ESIMERKKISKRIPTIT (kaikki merkit, sanat ja lauseet  kelpaa): " hakusana
# for apuu in $(ls --group-directories-first /home/$(whoami)/omatskriptit)
for apuu in $(ls /home/$(whoami)/omatskriptit)
do
  [[ $ix > 33 ]] && [[ -f $polku/$apuu ]] && ((ix++)) && continue
  [[ -f '/home/'$(whoami)'/omatskriptit/'$apuu ]] && [[ "$(cat '/home/'$(whoami)'/omatskriptit/'$apuu | grep "$hakusana")" ]] && Valittavat[ix]='/home/'$(whoami)'/omatskriptit/'$apuu && ((ix++))
done

for apuu in $(ls '/home/'$(whoami)'/omatskriptit/KOE_JA_ESIMERKKISKRIPTIT')  
do
  polku='/home/'$(whoami)'/omatskriptit/KOE_JA_ESIMERKKISKRIPTIT'
  test $ix -gt 33 && [[ -f $polku/$apuu ]] && ((ix++)) && continue
  [[ -f $polku/$apuu ]] && [[ "$(cat  $polku/$apuu | grep "$hakusana")" ]] && Valittavat[ix]=$polku/$apuu && ((ix++))
done
[[ $ix -eq 0 ]] && echo "Hakusanaa ei löytynyt" && sleep 2 && return

while true
do 
  ValitseValittavistaYksi "ARKISTOista ei ole etsitty. Valitse yksi näistä enintään 33:sta vaihtoehdosta. Hakusanan sisältäviä oli: "$ix
  [[ "$Tapahtuma" = 'end' ]] && break
  [[ $(echo $ValitunTeksti | grep .pdf ) ]] && evince $ValitunTeksti || gedit $ValitunTeksti
done
read -p 'Jatkaakseesi paina enter' apu
 
